package org.example.Soution003;

import java.util.ArrayList;
import java.util.List;

public class MDDPEditLength {
    public static void main(String[] args) {
       MDDPEditLength mddp = new MDDPEditLength();
       String w1="intention";
       String w2="execution";
        System.out.println(mddp.minDistance(w1,w2));
    }

    public int minDistance(String word1, String word2) {
        int n = word1.length(); int m = word2.length();
        int[][] dp = new int[n+1][m+1];
        for(int i=0;i<=n;i++){
            dp[i][0]=i;
        }
        for(int j=0;j<=m;j++){
            dp[0][j]=j;
        }
        for(int i=0;i<n;i++){
            for(int j=0;j<m;j++){
                if(word1.charAt(i)==word2.charAt(j)){
                    dp[i+1][j+1]=dp[i][j];
                }else{
                    dp[i+1][j+1]=Math.min(dp[i][j+1],Math.min(dp[i+1][j],dp[i][j]))+1;
                }
            }
        }
        return dp[n][m];
    }
}
